<?php
/**
 * 文章管理页面文件
 * 这个页面用于管理当前登录用户的所有文章
 * 提供文章列表显示、编辑、删除等功能
 * 只有登录用户才能访问，且只能管理自己的文章
 */

// 引入数据库配置文件，包含数据库连接信息
require_once '../config/database.php';
// 引入通用函数文件，包含各种辅助函数
require_once '../includes/functions.php';

// 检查用户是否已经登录，未登录用户无法访问文章管理页面
if (!isLoggedIn()) {
    // 跳转到登录页面
    redirect('../login.php');
}

// 获取当前登录用户的完整信息
$currentUser = getCurrentUser();

// 初始化消息变量，用于显示操作结果
$message = '';      // 消息内容
$messageType = '';  // 消息类型（success/error/info）

// 处理删除文章的请求
// 检查URL参数中是否包含删除操作和文章ID
if (isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['id'])) {
    // 获取要删除的文章ID，使用(int)强制转换确保是整数
    $articleId = (int)$_GET['id'];
    
    // 从数据库获取要删除的文章信息，用于权限验证
    $article = getArticleById($articleId);
    
    // 检查文章是否存在且属于当前登录用户
    // 这是重要的安全检查，确保用户只能删除自己的文章
    if ($article && $article['用户ID'] == $currentUser['id']) {
        // 构建删除SQL语句，同时验证用户ID确保安全
        // 由于数据库设计了外键约束，删除文章时相关的分类、标签、评论关联也会被自动删除
        $deleteSql = "DELETE FROM `文章表` WHERE `id` = $articleId AND `用户ID` = " . $currentUser['id'];
        
        // 执行删除操作
        if (mysqli_query($conn, $deleteSql)) {
            // 删除成功，设置成功消息
            $message = '文章删除成功！';
            $messageType = 'success';
        } else {
            // 删除失败，设置错误消息
            $message = '文章删除失败！';
            $messageType = 'error';
        }
    } else {
        // 文章不存在或不属于当前用户，设置权限错误消息
        $message = '您没有权限删除此文章！';
        $messageType = 'error';
    }
}

// 实现分页功能，获取当前用户的所有文章
// 从URL参数获取当前页码，默认为第1页
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
// 设置每页显示的文章数量
$limit = 10;
// 计算数据库查询的偏移量
$offset = ($page - 1) * $limit;

// 构建查询SQL语句，获取当前用户的文章列表
// 使用LEFT JOIN关联用户表获取作者用户名
// 按创建时间倒序排列，最新文章在前
$sql = "SELECT a.*, u.`用户名` 
        FROM `文章表` a 
        LEFT JOIN `用户表` u ON a.`用户ID` = u.`id`
        WHERE a.`用户ID` = " . $currentUser['id'] . "
        ORDER BY a.`创建时间` DESC 
        LIMIT $offset, $limit";

// 执行查询
$result = mysqli_query($conn, $sql);

// 初始化文章数组
$articles = array();

// 检查查询是否成功
if ($result) {
    // 遍历查询结果，将每行数据添加到文章数组中
    while ($row = mysqli_fetch_assoc($result)) {
        $articles[] = $row;
    }
}

// 获取当前用户的文章总数，用于计算分页
$countSql = "SELECT COUNT(*) as total FROM `文章表` WHERE `用户ID` = " . $currentUser['id'];
$countResult = mysqli_query($conn, $countSql);

// 计算总文章数和总页数
$totalArticles = $countResult ? mysqli_fetch_assoc($countResult)['total'] : 0;
$totalPages = ceil($totalArticles / $limit);  // 使用ceil向上取整
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文章管理 - 我的博客系统</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: "Microsoft YaHei", Arial, sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f5f5f5;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }
        
        header {
            background: #fff;
            padding: 20px 0;
            margin-bottom: 30px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        
        .header-content {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .logo {
            font-size: 24px;
            font-weight: bold;
            color: #2c3e50;
        }
        
        .nav {
            display: flex;
            gap: 20px;
        }
        
        .nav a {
            text-decoration: none;
            color: #333;
            padding: 8px 15px;
            border-radius: 5px;
            transition: background-color 0.3s;
        }
        
        .nav a:hover, .nav a.active {
            background-color: #3498db;
            color: white;
        }
        
        .articles-container {
            background: white;
            padding: 40px;
            border-radius: 10px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        
        .page-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 30px;
            border-bottom: 2px solid #e1e1e1;
            padding-bottom: 20px;
        }
        
        .page-title {
            font-size: 28px;
            color: #2c3e50;
        }
        
        .btn {
            background: #3498db;
            color: white;
            padding: 10px 20px;
            text-decoration: none;
            border-radius: 5px;
            transition: background-color 0.3s;
            border: none;
            cursor: pointer;
            display: inline-block;
        }
        
        .btn:hover {
            background: #2980b9;
        }
        
        .btn-success {
            background: #27ae60;
        }
        
        .btn-success:hover {
            background: #229954;
        }
        
        .btn-danger {
            background: #e74c3c;
        }
        
        .btn-danger:hover {
            background: #c0392b;
        }
        
        .btn-warning {
            background: #f39c12;
        }
        
        .btn-warning:hover {
            background: #e67e22;
        }
        
        .alert {
            padding: 12px 15px;
            border-radius: 5px;
            margin-bottom: 20px;
        }
        
        .alert-error {
            background: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        .alert-success {
            background: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .articles-table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 30px;
        }
        
        .articles-table th,
        .articles-table td {
            padding: 15px;
            text-align: left;
            border-bottom: 1px solid #e1e1e1;
        }
        
        .articles-table th {
            background: #f8f9fa;
            font-weight: bold;
            color: #333;
        }
        
        .articles-table tr:hover {
            background: #f8f9fa;
        }
        
        .article-title {
            font-weight: bold;
            margin-bottom: 5px;
        }
        
        .article-title a {
            text-decoration: none;
            color: #2c3e50;
        }
        
        .article-title a:hover {
            color: #3498db;
        }
        
        .article-excerpt {
            color: #666;
            font-size: 14px;
        }
        
        .article-stats {
            font-size: 14px;
            color: #666;
        }
        
        .article-actions {
            display: flex;
            gap: 10px;
        }
        
        .status-badge {
            display: inline-block;
            padding: 3px 8px;
            border-radius: 3px;
            font-size: 12px;
            font-weight: bold;
        }
        
        .status-top {
            background: #e74c3c;
            color: white;
        }
        
        .status-recommend {
            background: #f39c12;
            color: white;
        }
        
        .pagination {
            text-align: center;
            margin-top: 30px;
        }
        
        .pagination a {
            display: inline-block;
            padding: 10px 15px;
            margin: 0 5px;
            background: white;
            color: #333;
            text-decoration: none;
            border-radius: 5px;
            border: 1px solid #ddd;
        }
        
        .pagination a:hover, .pagination .current {
            background: #3498db;
            color: white;
            border-color: #3498db;
        }
        
        .no-articles {
            text-align: center;
            padding: 60px;
            color: #666;
        }
    </style>
</head>
<body>
    <header>
        <div class="container">
            <div class="header-content">
                <div class="logo">我的博客系统</div>
                <nav class="nav">
                    <a href="../index.php">首页</a>
                    <a href="index.php">管理后台</a>
                    <a href="post.php">发布文章</a>
                    <a href="articles.php" class="active">管理文章</a>
                    <a href="../logout.php">退出登录</a>
                </nav>
            </div>
        </div>
    </header>

    <div class="container">
        <div class="articles-container">
            <div class="page-header">
                <h1 class="page-title">文章管理</h1>
                <a href="post.php" class="btn btn-success">发布新文章</a>
            </div>
            
            <?php if (!empty($message)): ?>
                <div class="alert alert-<?php echo $messageType; ?>">
                    <?php echo escape($message); ?>
                </div>
            <?php endif; ?>
            
            <?php if (empty($articles)): ?>
                <div class="no-articles">
                    <h3>您还没有发布任何文章</h3>
                    <p>快去发布您的第一篇文章吧！</p>
                    <a href="post.php" class="btn btn-success" style="margin-top: 20px;">发布文章</a>
                </div>
            <?php else: ?>
                <table class="articles-table">
                    <thead>
                        <tr>
                            <th>文章标题</th>
                            <th>状态</th>
                            <th>统计</th>
                            <th>发布时间</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($articles as $article): ?>
                            <tr>
                                <td>
                                    <div class="article-title">
                                        <a href="../article.php?id=<?php echo $article['id']; ?>" target="_blank">
                                            <?php echo escape($article['标题']); ?>
                                        </a>
                                    </div>
                                    <div class="article-excerpt">
                                        <?php echo escape(getExcerpt($article['内容'], 100)); ?>
                                    </div>
                                </td>
                                <td>
                                    <?php if ($article['是否置顶']): ?>
                                        <span class="status-badge status-top">置顶</span>
                                    <?php endif; ?>
                                    <?php if ($article['是否推荐']): ?>
                                        <span class="status-badge status-recommend">推荐</span>
                                    <?php endif; ?>
                                    <?php if (!$article['是否置顶'] && !$article['是否推荐']): ?>
                                        <span style="color: #666;">普通</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <div class="article-stats">
                                        阅读：<?php echo $article['阅读量']; ?><br>
                                        点赞：<?php echo $article['点赞量']; ?><br>
                                        评论：<?php echo $article['评论量']; ?>
                                    </div>
                                </td>
                                <td>
                                    <?php echo formatDate($article['创建时间']); ?>
                                </td>
                                <td>
                                    <div class="article-actions">
                                        <a href="edit.php?id=<?php echo $article['id']; ?>" class="btn btn-warning">编辑</a>
                                        <a href="?action=delete&id=<?php echo $article['id']; ?>" 
                                           class="btn btn-danger" 
                                           onclick="return confirm('确定要删除这篇文章吗？删除后无法恢复！')">删除</a>
                                    </div>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
                
                <!-- 分页 -->
                <?php if ($totalPages > 1): ?>
                    <div class="pagination">
                        <?php if ($page > 1): ?>
                            <a href="?page=<?php echo $page - 1; ?>">上一页</a>
                        <?php endif; ?>
                        
                        <?php for ($i = 1; $i <= $totalPages; $i++): ?>
                            <?php if ($i == $page): ?>
                                <span class="current"><?php echo $i; ?></span>
                            <?php else: ?>
                                <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a>
                            <?php endif; ?>
                        <?php endfor; ?>
                        
                        <?php if ($page < $totalPages): ?>
                            <a href="?page=<?php echo $page + 1; ?>">下一页</a>
                        <?php endif; ?>
                    </div>
                <?php endif; ?>
            <?php endif; ?>
        </div>
    </div>
</body>
</html> 